﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleRef
{
    public class Test
    {
        private string _message;
        public string Message
        {
            get
            {
                return _message;
            }
            set
            {
                _message = value;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(StaticClass.GetData(2));
            Parallel.For(0, 2, item =>
            {
                for (int j = 0; j < 2; j++)
                {
                    Console.WriteLine(StaticClass.GetData(2));
                }
            });
            //Test a = new Test();
            //a.Message = "初始值";
            //Test001(a);
            //Console.WriteLine("没有添加ref关键字，也没有对引用参数引用了新的一个Test类型的对象， Test001(a)结果为：{0}", a.Message);

            //Test b = new Test();
            //b.Message = "初始值";
            //TestRef(b);
            //Console.WriteLine("没有添加ref关键字，并重新对引用参数引用了新的一个Test类型的对象，  TestRef(b);结果为：{0}", b.Message);

            //Test c = new Test();
            //c.Message = "初始值";
            //TestRef(ref c);
            //Console.WriteLine("关键字ref关键字，并重新对引用参数引用了新的一个Test类型的对象，  TestRef(ref c)结果为：{0}", c.Message);

            Console.Read();
        }

        static void TestRef(Test t)
        {
            t = new Test();
            t.Message = "对象已赋值";
        }

        static void TestRef(ref Test t)
        {
            t = new Test();
            t.Message = "对象已赋值";
        }

        static void Test001(Test t)
        {
          //  t = new Test();
            t.Message = "对象已赋值";
        }
    }
}
